<?php

/**
 * ESTUDIANTE actions.
 *
 * @package    OPENBIBLIOSOFT
 * @subpackage ESTUDIANTE
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
 */
class ESTUDIANTEActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    if($this->getUser()->getAttribute('codigoUsuario') == null)
	{
		return  $this->renderText("<script type='text/javascript'> window.location = 'Entrada'; </script> ");
	}
  }
	
	public function executeListar()
	{
		$buscar = $this->getRequestParameter('Busqueda');
		$buscar = "%".$buscar."%";
		$campo = $this->getRequestParameter('Campo');
		
		$conexion = new Criteria();
		$conexion->addJoin(EstudiantePeer::CODIGO, UsuarioPeer::CODIGO);// Criteria::LEFT_JOIN
		
		if($campo == 'Nombre'){ $conexion->add(UsuarioPeer::NOMBRE, $buscar, Criteria::LIKE);}
		if($campo == 'Identificacion'){ $conexion->add(UsuarioPeer::IDENTIFICACION, $buscar, Criteria::LIKE);}
		if($campo == 'Direccion'){ $conexion->add(UsuarioPeer::DIRECCION, $buscar, Criteria::LIKE);}
		if($campo == 'Telefono'){ $conexion->add(UsuarioPeer::TELEFONO, $buscar, Criteria::LIKE);}
		if($campo == 'Email'){ $conexion->add(UsuarioPeer::EMAIL, $buscar, Criteria::LIKE);}
		if($campo == 'Universidad'){ $conexion->add(EstudiantePeer::UNIVERSIDADORIGEN, $buscar, Criteria::LIKE);}
		if($campo == 'Carrera'){ $conexion->add(EstudiantePeer::CARRERA, $buscar, Criteria::LIKE);}
		if($campo == 'Todos')
		{		
			$c1 = $conexion->getNewCriterion(UsuarioPeer::NOMBRE, $buscar, Criteria::LIKE);
			$c2 = $conexion->getNewCriterion(UsuarioPeer::IDENTIFICACION, $buscar, Criteria::LIKE);
			$c3 = $conexion->getNewCriterion(UsuarioPeer::DIRECCION, $buscar, Criteria::LIKE);
			$c4 = $conexion->getNewCriterion(UsuarioPeer::TELEFONO, $buscar, Criteria::LIKE);
			$c5 = $conexion->getNewCriterion(UsuarioPeer::EMAIL, $buscar, Criteria::LIKE);
			$c6 = $conexion->getNewCriterion(EstudiantePeer::UNIVERSIDADORIGEN, $buscar, Criteria::LIKE);
			$c7 = $conexion->getNewCriterion(EstudiantePeer::CARRERA, $buscar, Criteria::LIKE);
			$c6->addOr($c7);
			$c5->addOr($c6);
			$c4->addOr($c5);
			$c3->addOr($c4);
			$c2->addOr($c3);
			$c1->addOr($c2);
			$conexion->add($c1);
		}
		
		$numeroEstudiantes = UsuarioPeer::doCount($conexion);
		$conexion->setLimit($this->getRequestParameter('limit'));
		$conexion->setOffset($this->getRequestParameter('start'));
		$estudiantes = UsuarioPeer::doSelect($conexion);
		$pos = 0;
		$nbrows=0;
		$datos;
		
		foreach ($estudiantes As $temporal)
		{
			$datos[$pos]['estudianteCodigo']=$temporal->getCodigo();
			$datos[$pos]['estudianteIdentificacion']=$temporal->getIdentificacion();
			$datos[$pos]['estudianteNombre']=$temporal->getNombre();
			$datos[$pos]['estudianteDireccion']=$temporal->getDireccion();
			$datos[$pos]['estudianteTelefono']=$temporal->getTelefono();
			$datos[$pos]['estudianteEmail']=$temporal->getEmail();
			$datos[$pos]['estudianteUniversidad']=$this->getUniversidad($temporal->getCodigo());
			$datos[$pos]['estudianteCarrera']=$this->getCarrera($temporal->getCodigo());
			
			$pos++;
			$nbrows++;
		}
		
		if($nbrows>0){
			$jsonresult = json_encode($datos);
			return  $this->renderText('({"total":"'.$numeroEstudiantes.'","results":'.$jsonresult.'})');
		}
		else {
			return  $this->renderText('({"total":"0", "results":""})');
		}
	}
	
	public function getUniversidad($codigo)
	{
		$universidad = '';
		$conexion = new Criteria();
		$conexion->add(EstudiantePeer::CODIGO, $codigo);
		
		if($conexion)
		{
			$estudiante = EstudiantePeer::doSelectOne($conexion);
			$universidad = $estudiante->getUniversidadorigen();
		}
		else
		{
			$universidad = 'sin universidad';
		}
		
		return $universidad;
	}
	
	public function getCarrera($codigo)
	{
		$carrera = '';
		$conexion = new Criteria();
		$conexion->add(EstudiantePeer::CODIGO, $codigo);
		
		if($conexion)
		{
			$estudiante = EstudiantePeer::doSelectOne($conexion);
			$carrera = $estudiante->getCarrera();
		}
		else
		{
			$carrera = 'sin carrera';
		}
		
		return $carrera;
	}
	
	public function executeGuardar()
	{
		$usuario = new Usuario();
		$usuario->setCodigo($this->getRequestParameter('Codigo'));
		$usuario->setNombre($this->getRequestParameter('Nombre'));
		$usuario->setIdentificacion($this->getRequestParameter('Identificacion'));
		$usuario->setDireccion($this->getRequestParameter('Direccion'));
		$usuario->setTelefono($this->getRequestParameter('Telefono'));
		$usuario->setEmail($this->getRequestParameter('Email'));
		$estudiante = new Estudiante();
		$estudiante->setCodigo($this->getRequestParameter('Codigo'));
		$estudiante->setUniversidadorigen($this->getRequestParameter('Universidad'));
		$estudiante->setCarrera($this->getRequestParameter('Carrera'));

		try
		{
			$usuario->save();
			$estudiante->save();
		}
		catch (Exception $excepcionUsuario)
		{
			return  $this->renderText("({success: false, errors: { reason: 'Exception: Hubo un problema creando el estudiante: ".$this->getRequestParameter('Nombre')."'}})");
		}
		return  $this->renderText("({success: true, mensaje:'El estudiante fue creado exitosamente'})");
	}
	
	public function executeActualizar()
	{
		$estudianteCodigoViejo = $this->getRequestParameter('CodigoViejo');
		$conexion = new Criteria();
		$conexion->add(EstudiantePeer::CODIGO, $estudianteCodigoViejo);
		$estudiante = EstudiantePeer::doSelectOne($conexion);

		if($estudiante)
		{
			  	try
		      	{
					//$estudiante->getUsuario()->setPrimaryKey($this->getRequestParameter('Codigo'));//setPrimaryKey
					//$estudiante->setPrimaryKey($this->getRequestParameter('Codigo'));
					$estudiante->getUsuario()->setIdentificacion($this->getRequestParameter('Identificacion'));
					$estudiante->getUsuario()->setNombre($this->getRequestParameter('Nombre'));
					$estudiante->getUsuario()->setDireccion($this->getRequestParameter('Direccion'));
		        	$estudiante->getUsuario()->setTelefono($this->getRequestParameter('Telefono'));
					$estudiante->getUsuario()->setEmail($this->getRequestParameter('Email'));
					$estudiante->setUniversidadorigen($this->getRequestParameter('Universidad'));
					$estudiante->setCarrera($this->getRequestParameter('Carrera'));
		        	$estudiante->save();
		      	}
		      	catch (Exception $excepcionEstudiante)
		      	{
		          	return  $this->renderText("({success: false, errors: { reason: 'Exception: Problemas al actualizar el estudiante: ".$this->getRequestParameter('Nombre')."'}})");
		        
		      	}
				return  $this->renderText("({success: true, mensaje:'El estudiante fue actualizado exitosamente'})");
		} else {
			return  $this->renderText("({success: false, errors: { reason: 'No se a actualizado el estudiante correctamente'}})");
		}
	}
	
	public function executeEliminar()
	{
		$codigo = $this->getRequestParameter('Codigo');

		$conexion = new Criteria();
		$conexion->add(UsuarioPeer::CODIGO, $codigo);
		if($conexion)
		{
			$usuario = UsuarioPeer::doSelectOne($conexion);
			
			try
			{
				$usuario->delete();
				
				$conexion = new Criteria();
				$conexion->add(EstudiantePeer::CODIGO, $codigo);
				$estudiante = EstudiantePeer::doSelectOne($conexion);
				$estudiante->delete();
			}
			catch (Exception $excepcionEstudiante)
			{
				return  $this->renderText("({success: false, errors: { reason: 'Exception: No se pudo eliminar el estudiante'}})");
			}
		
			return  $this->renderText("({success: true, mensaje:'El estudiante fue eliminado exitosamente'})");
		}
		else
		{
			return  $this->renderText("({success: false, errors: { reason: 'No se pudo eliminar el estudiante'}})");
		}
	}
}
